#ifndef PDFGLOBALSIGNALMANAGER_H
#define PDFGLOBALSIGNALMANAGER_H

/**
 * @brief 全局信号管理器单例类
 *
 * 用于在应用程序的不同组件之间发送和接收全局信号。
 * 这是一个线程安全的单例实现。
 *
 * 使用示例：
 * @code
 * // 连接信号
 * connect(GlobalSignalManager::instance(), &GlobalSignalManager::documentSaved,
 *         this, &MyClass::onDocumentSaved);
 *
 * // 发射信号
 * GlobalSignalManager::instance()->emitDocumentSaved(true, "document.pdf");
 * @endcode
 */

#include <QObject>
#include <QString>
#include <QMutex>

class PDFGlobalSignalManager : public QObject
{
    Q_OBJECT
public:
    static PDFGlobalSignalManager* instance();

    static void destroy();

signals:
    void notifyPdfDocumentSaved(bool state);//pdf文档保存状态通知
    void notifyPdfDocumentOpened(bool state);//pdf文档打开状态通知

private:
    explicit PDFGlobalSignalManager(QObject* parent = nullptr);
    // 删除拷贝构造和赋值操作
    PDFGlobalSignalManager(const PDFGlobalSignalManager&) = delete;
    PDFGlobalSignalManager& operator=(const PDFGlobalSignalManager&) = delete;

    ~PDFGlobalSignalManager() override;

    static PDFGlobalSignalManager* s_instance;  ///< 单例实例
    static QMutex s_mutex;                   ///< 线程安全互斥锁
};

#endif // PDFGLOBALSIGNALMANAGER_H
